package cn.tedu.justone.pack02;

/**
 * ZZ：JustOne
 * VX：Andylau2020smile
 * DY：JustOne2018
 * ZT：《》
 */
public class Demo16_方法示例_interrupt对非阻塞线程的影响 {
    public static void main(String[] args) {

        //方法示例：interrupt对非阻塞线程的影响
        //方法示例：interrupt对非阻塞线程的影响
        //方法示例：interrupt对非阻塞线程的影响

        //测试结果：
        // 1,一个线程t，无论它是否是阻塞线程，t.interrupt()对其都有影响。
        // 2,如果执行t.interrupt()时t线程正在阻塞，则会马上中断并抛异常。
        // 3,如果执行t.interrupt()时t线程没有阻塞，则会给t线程添加一个中断标记
        //   并继续往后执行，后续如果没有阻塞则一路畅通，如果遇到阻塞则会被中断并抛出异常。

        Thread you = new Thread(){
            @Override
            public void run() {
                for (int i = 0; i < 500000 * 20; i++) {
                    if(i%500000==0){
                        System.out.println("You：努力搬砖中");
                    }
                }
                System.out.println("You：砖搬完了");

                //测试中断后的
                try {
                    Thread.sleep(3000);
                    System.out.println("Yuu：休息完了");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        };
        you.start();

        System.out.println("---You线程是否被标记中断：" + you.isInterrupted());
        try {
            Thread.sleep(10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        you.interrupt();
        System.out.println("---You线程是否被标记中断：" + you.isInterrupted());

    }
}
